<?
	/* Se asegura que el archivo es incluido por el index */
		defined( 'LOAD_MODULE_ACTION' ) or die( 'No esta permitido el acceso directo a ' . __FILE__ );
	/* Cuando se hace el include del archivo automaticamente crea un objeto y lo guarda en una variable temporal */
		$this->oTmpObject = new Establecimiento_frm( $this );

	class Establecimiento_frm extends Frm
	{
	function Establecimiento_frm( &$oModule )
		{
			$this->Frm( $oModule );
			// Crea los Controles
				$this->aFields['ncEstablecimiento']			= new Input("Codigo","ncEstablecimiento", '', false, true);
				$this->aFields['ncEstablecimientoPadre'] 	= new InputLookUp ( "Establecimiento Padre", "ncEstablecimientoPadre"  );
				$this->aFields['cdEstablecimiento'] 		= new InputText ( "Nombre", "cdEstablecimiento" );
				$this->aFields['cPaginaWeb']				= new InputText ( "Web", "cPaginaWeb" );
				$this->aFields['cEmail']					= new InputText ( "Email", "cEmail" );
				$this->aFields['cEmailContacto']			= new InputText ( "Email Contacto", "cEmailContacto" );
				$this->aFields['ncOrganizacion']			= new InputLookUp( "Organizacion", "ncOrganizacion" );
				$this->aFields['cHorarios']					= createHorario ();
				$this->aFields['cEntrada']					= createEntrada();
				$this->aFields['cObservaciones']			= new InputText ( "Observaciones", "cObservaciones" );
				$this->aFields['Funcion']					= new InputArray ( "Funcion", "Funcion" );
				//$this->aFields['bBaja']						= new InputList( "Baja", "bBaja" );
				$this->aFields['ncEstadoPublicacion']						= new InputList( "Estado", "ncEstadoPublicacion" );
				$this->aFields['ncServicio']				= new InputList ( "Servicio", "ncServicio" );
				$this->aFields['ncProducto']				= new InputList ( "Producto", "ncProducto" );
				$this->aFields['aFormaPago']				= new InputCheck( "FormaPago", "aFormaPago" );
				$this->aFields['aRotulo']					= new InputCheck( "Tags", "aRotulo" );
				$this->aFields['aIdiomas']					= new InputCheck( "Idiomas", "aIdiomas" );
				$this->aFields['bActivo']   				= new InputList( "Activo", "bActivo" );

				$this->aFields['Funcion']->addInput( new InputList ( "", "ncFuncion" ) ) ;
				$this->aFields['Funcion']->addInput( new InputList ( "", "ncCategoriaEstablecimiento" ) ) ;
				$this->aFields['Funcion']->aInput[ncFuncion]->setWidth('150');
				$this->aFields['Funcion']->aInput[ncCategoriaEstablecimiento]->setWidth('150');
				$this->setMultiLanguage();
				// Crea los subformularios
					$oModAdministracion =& loadModule('administracion');
					$oModAdministracion->setSubModule('entidades');
				$this->aFields['ncDomicilio'] = $oModAdministracion->loadClass( 'Domicilio_frm' );
		}
	function verify()
	{
		$ncEstablecimiento = getParam('ncEstablecimiento');
		$cdEstablecimiento = getParam('cdEstablecimiento');
		if ( $ncEstablecimiento ) $cFiltro  = " AND ncEstablecimiento <> $ncEstablecimiento ";
		if ( $cdEstablecimiento )
		{
			list ( $ncEstablecimientoExistente ,$cdEstablecimientoExistente )= $this->oDatabase->getArray("SELECT ncEstablecimiento, cdEstablecimiento FROM gtEstablecimiento WHERE cdEstablecimiento like '%$cdEstablecimiento%'  $cFiltro ", 0, 1);
			if ( $ncEstablecimientoExistente ) $this->addMessage( "Verifique que el establecimiento no este ya cargado, en la base esta " . 	$this->oModule->makeAction ( $cdEstablecimientoExistente , VER_ESTABLECIMIENTO , "ncEstablecimiento=" . $ncEstablecimientoExistente ) , FORM_ADVERTENCIA );
		}
	}

	function setValue( $ncEstablecimiento )
		{
			$this->aFields['ncEstablecimiento']->setValue( $ncEstablecimiento );

			$cSql = "SELECT *
								FROM gtEstablecimiento
								WHERE ncEstablecimiento = $ncEstablecimiento";
			$aRow = $this->oDatabase->getArray($cSql);
			$this->setFieldsArray ( $aRow );
			return $aRow;
		}
	function setLevel( $nLevel)
		{
			switch ( $nLevel )
			{
				case 2:
					if ( $this->aFields['ncEstablecimiento']->getValue() )
						$this->aInput = array( 'ncEstablecimiento', 'cdEstablecimiento', 'cPaginaWeb', 'cEmail', 'cEmailContacto',  'cHorarios', 'cEntrada', 'ncOrganizacion' ,'ncEstablecimientoPadre',  'ncDomicilio', 'aFormaPago', 'aRotulo', 'aIdiomas' , 'cObservaciones', 'ncEstadoPublicacion');
					else
						$this->aInput = array( 'ncEstablecimiento', 'cdEstablecimiento', 'Funcion', 'cPaginaWeb', 'cEmail', 'cEmailContacto',  'cHorarios', 'cEntrada', 'ncOrganizacion','ncEstablecimientoPadre' , 'ncDomicilio', 'aFormaPago', 'aRotulo', 'aIdiomas' , 'cObservaciones', 'ncEstadoPublicacion');
					break;
			}
			if ( $this->aFields['ncEstablecimientoPadre']->getValue()  ) unset($this->aInput[array_search( 'ncDomicilio',$this->aInput)]);
		}
	function initializeForm()
		{
			// Configura el Titulo
				$this->setLabel( 'Establecimiento' );
			if ( $this->aFields['ncEstablecimientoPadre']->getValue()  )
			{
				$cSql = "SELECT cdEstablecimiento FROM gtEstablecimiento WHERE ncEstablecimiento =  " . $this->aFields['ncEstablecimientoPadre']->getValue()  ;
				$cdEstablecimiento = $this->oDatabase->getData($cSql);
				$this->setLabel( "SubEstablecimiento de " . $cdEstablecimiento  );
			}
			// Si Recibe la Pk => busca los datos
				if ( $this->isRetrievable() &&  $this->aFields['ncEstablecimiento']->getValue() )
				{
					$aRow = $this->setValue( $this->aFields['ncEstablecimiento']->getValue() );
				}
			return true;
		}
	function initializeField( $cField , &$oField )
		{
			switch ( $cField )
			{
				case 'ncEstablecimientoPadre':
					$oField->setForm( $this );
					initializeEstablecimiento ( $oField );
				break;
				case 'cdEstablecimiento':
					$oField->setMandatory( $this->isMandatory() );
					$oField->setLength(120);
					$oField->setWidth(200);
					if ( $this->getOptionsLevel() > 1 ) $oField->setOnBlur($this->getVerifyEvent());
					$oField->setForm( $this );
				break;
				case 'ncOrganizacion':
					$oField->setForm( $this );
					initializeOrganizacion ( $oField );
				break;
				case 'cEntrada':
					$oField->setForm( $this );
					$oField->setLabel( 'Entrada');					
				break;				
				case 'cHorarios':
					$oField->setForm( $this );
					$oField->setLabel( 'Horarios');					
				break;
				case 'cEmail':
					$oField->setLength(90);
				break;
				case 'cEmailContacto':
					$oField->setLength(90);
				break;
				case 'cPaginaWeb':
					$oField->setLength(50);
				break;
				case 'cObservaciones':
					$oField->setMultiLanguage();
					$oField->setLength(4096);
					//$oField->setEditor();
				break;
				case 'ncDomicilio':
					$oField->setLabel("Domicilio del Establecimiento");
					$oField->setFormName( $this->getFormName() );
					$oField->setOptionsLevel(2);
					$oField->setOptionsType( 'N');
					//$oField->setUbicacionPadre(8,25);
				break;
				case 'bBaja':
					$oField->setDefault(0);
					if ( $this->nLevel == 2 &&  $oField->getValue() == 0 ) $oField->setHidden();
					else	$oField->setBool();
				break;
				case 'Funcion':
						$cSql = "SELECT ncFuncion, cdFuncion FROM gcFuncion";
						$oField->aInput['ncFuncion']->setMatrix( $this->oDatabase->getMatrix($cSql) );
						$oField->setAutoRefresh('ncFuncion', $this);
						if ( $oField->aInput['ncFuncion']->getValue () )
						{
							$cSql = "SELECT ncCategoriaEstablecimiento, cdCategoriaEstablecimiento FROM gcCategoriaEstablecimiento WHERE ncFuncion = "  . $oField->aInput['ncFuncion']->getValue ();
							$oField->aInput['ncCategoriaEstablecimiento']->setLanguage( 'es' );
							$oField->aInput['ncCategoriaEstablecimiento']->setMatrix( $this->oDatabase->getMatrix($cSql) );
						}
						else $oField->aInput['ncCategoriaEstablecimiento']->setHidden();
				break;
				case 'aFormaPago':
					if ($this->aFields['ncEstablecimiento']->getValue()  )
					{
						$cSql = "SELECT Par.ncFormaPago, Par.cdFormaPago, Tab.ncEstablecimiento
											FROM gcFormaPago as Par
												LEFT JOIN gtEstablecimientoFormaPago as Tab
													ON Par.ncFormaPago = Tab.ncFormaPago
													AND Tab.ncEstablecimiento = " . $this->aFields['ncEstablecimiento']->getValue()  . "
											ORDER BY Par.cdFormaPago";
					} else
					{
						$cSql = "SELECT ncFormaPago, cdFormaPago
											FROM gcFormaPago";
					}
					$oField->setMatrix( $this->oDatabase->getMatrix( $cSql ) );
					$oField->setMultiple( true );
				break;
				case 'aRotulo':
					if ($this->aFields['ncEstablecimiento']->getValue()  )
					{
						$cSql = "SELECT Par.ncRotulo, Par.cdRotulo, Tab.ncEstablecimiento
											FROM gtRotuloEstablecimiento as Par
												LEFT JOIN gtEstablecimientoRotulo as Tab
													ON Par.ncRotulo = Tab.ncRotulo
													AND Tab.ncEstablecimiento = " . $this->aFields['ncEstablecimiento']->getValue()  . "
											ORDER BY Par.cdRotulo";
					} else
					{
						$cSql = "SELECT ncRotulo, cdRotulo
											FROM gtRotuloEstablecimiento";
					}
					$oField->setMatrix( $this->oDatabase->getMatrix( $cSql ) );
					$oField->setMultiple( true );
				break;
				case 'ncEstadoPublicacion':
						$cSql = "SELECT ncEstadoPublicacion, cdEstadoPublicacion FROM gcEstadoPublicacion ";
						$oField->setMatrix( $this->oDatabase->getMatrix($cSql) );
				break;
				case 'ncCategoria':
					if ( $this->aFields['ncFuncion']->getValue()  )
					{
						$cSql = "SELECT ncCategoriaEstablecimiento, cdCategoriaEstablecimiento FROM gcCategoriaEstablecimiento WHERE ncFuncion = " . $this->aFields['ncFuncion']->getValue();
						$oField->setMatrix( $this->oDatabase->getMatrix($cSql) );
					} else
					{
						$oField->setHidden();
					}
				break;
				case 'ncProducto':
					$cSql = "SELECT ncProducto, cdProducto FROM gtProductoTuristico";
					$oField->setMatrix( $this->oDatabase->getMatrix($cSql) );
				break;
				case 'ncServicio':
					$cSql = "SELECT ncServicio, cdServicio FROM gcServicio";
					$oField->setMatrix( $this->oDatabase->getMatrix($cSql) );
				break;
				case 'bActivo':				
					$oField->setBool();
				break;
				case 'aIdiomas':
					if ($this->aFields['ncEstablecimiento']->getValue()  )
					{
						$cSql = "SELECT Par.ncIdioma, Par.cdIdioma, Tab.ncEstablecimiento
											FROM acIdioma as Par
											LEFT JOIN gtEstablecimientoIdioma as Tab
													ON Tab.ncIdioma = Par.ncIdioma
													AND Tab.ncEstablecimiento = " . $this->aFields['ncEstablecimiento']->getValue()  . "
											WHERE Par.ncIdioma IN (3,5, 25, 116,  32, 37, 48, 51, 52, 84, 95)
											ORDER BY Par.cdIdioma";
					} else
					{
						$cSql = "SELECT ncIdioma, cdIdioma
											FROM acIdioma
											WHERE ncIdioma IN (3,5, 25, 116,  32, 37, 48, 51, 52, 84, 95)
											ORDER BY cdIdioma";
					}
					$oField->setMatrix( $this->oDatabase->getMatrix( $cSql ) );
					$oField->setMultiple( true );
				break;
			}
	 	}
	}
?>